precedence and associativity in programming